package com.yincheng.oes.business.exam.judgepaper.mapper;

import java.util.HashMap;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.yincheng.oes.business.exam.export.model.ExportPaperParam;
import com.yincheng.oes.business.exam.judgepaper.entity.PaperResult;
import com.yincheng.oes.business.exam.judgepaper.entity.PaperStudentResult;

/**
 *
 * @author yangsy
 * @version 1.0.0
 * @since
 * 创建时间：2018年7月18日
 * 功能描述：考试成绩mapper层
 * 邮箱地址：446948434@qq.com
 */
@Repository
public interface PaperResultMapper {
    /**
     * 根据id删除考试成绩
     *
     * @param id
     * @return
     */
    int deleteById(String id);

    /**
     * 新增考试成绩
     *
     * @param record
     * @return
     */
    int insert(PaperResult record);

    /**
     * 根据id查询考试成绩
     *
     * @param id
     * @return
     */
    PaperResult selectById(String id);

    /**
     * 更新考试成绩
     *
     * @param record
     * @return
     */
    int update(PaperResult record);

    /**
     * 获取成绩表最大id值
     *
     * @return
     */
    Integer selectMaxId();

    /**
     * 根据答卷id查询信息
     *
     * @param id
     * @return
     */
    PaperStudentResult selectByResultId(String id);

    List<PaperStudentResult> selectPaperStudentResultsByParam(ExportPaperParam param);

    /**
     * 根据试卷id和学生id获取答卷及题目列表统计信息信息
     *
     * @param paperId
     * @param userId
     * @return
     */
    PaperStudentResult selectByPaperId(@Param("paperId") String paperId, @Param("userId") String userId);

    PaperStudentResult selectByPaperIdAndUserName(@Param("paperId") String paperId, @Param("userName") String userName);

    /**
     * 教师认领答卷并修改答卷状态
     *
     * @param map
     * @return
     */
    int updateByParam(HashMap<String, String> map);

    int changeExportStatus(String resultId);

    /**
     * 根据试卷id和学生id获取答卷信息
     *
     * @param paperId
     * @param userId
     * @return
     */
    PaperResult selectByPaperIdAndUserId(@Param("paperId") String paperId, @Param("userId") String userId);

    /**
     * 根据试卷id获取答卷列表
     *
     * @param paperId
     * @return
     */
    List<PaperResult> selectPaperByPaperId(String paperId);

    /**
     * 根据param获取答卷列表
     *
     * @param param param
     * @return 答卷列表
     */
    List<PaperResult> selectPaperByParam(ExportPaperParam param);
}
